﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Configuration;
//using System.IO;
//using Utilities;

//namespace Moneymatters
//{
//    internal static class AppSettingsLoader
//    {
//        static Dictionary<string, string> appSettingsValuesMap = new Dictionary<string, string>();

//        static AppSettingsLoader()
//        {
//            try
//            {
//                LoadSettings();

//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.ReceiptPrefix))
//                {
//                    // Default
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.ReceiptPrefix, "MRCHSL/RCPT/");
//                }

//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.VoucherPrefix))
//                {
//                    // Default
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.VoucherPrefix, "MRCHSL/VCHR/");
//                }

//                string executablePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
//                string folderName = Path.GetDirectoryName(executablePath);
                
//                string scannedImagesLocation = Path.Combine(folderName, "ScannedImages");
//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.ScannedImageLocation))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.ScannedImageLocation, scannedImagesLocation);
//                }
//                else
//                {
//                    string folderLocationFromconfig =
//                                appSettingsValuesMap[Constants.AppSettingsKeys.ScannedImageLocation];

//                    if(string.IsNullOrEmpty(folderLocationFromconfig) || !Directory.Exists(folderLocationFromconfig))   
//                    {
//                        if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.ScannedImageLocation))
//                        {
//                            appSettingsValuesMap.Add(Constants.AppSettingsKeys.ScannedImageLocation, scannedImagesLocation);
//                        }
//                        else
//                        {
//                            appSettingsValuesMap[Constants.AppSettingsKeys.ScannedImageLocation] = scannedImagesLocation;
//                        }
//                    }
//                }

//                string voucherReceiptLocation = Path.Combine(folderName, "VouchersReceipts");
//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.VoucherReceiptLocation))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.VoucherReceiptLocation, voucherReceiptLocation);
//                }
//                else
//                {
//                    string folderLocationFromconfig =
//                                appSettingsValuesMap[Constants.AppSettingsKeys.VoucherReceiptLocation];

//                    if (string.IsNullOrEmpty(folderLocationFromconfig) || !Directory.Exists(folderLocationFromconfig))
//                    {
//                        if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.VoucherReceiptLocation))
//                        {
//                            appSettingsValuesMap.Add(Constants.AppSettingsKeys.VoucherReceiptLocation, voucherReceiptLocation);
//                        }
//                        else
//                        {
//                            appSettingsValuesMap[Constants.AppSettingsKeys.VoucherReceiptLocation] = voucherReceiptLocation;
//                        }
//                    }
//                }

//                string exportedFilesLocation = Path.Combine(folderName, "ExportedFiles");
//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.ExportedFilesLocation))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.ExportedFilesLocation, exportedFilesLocation);
//                }
//                else
//                {
//                    string folderLocationFromconfig =
//                                appSettingsValuesMap[Constants.AppSettingsKeys.ExportedFilesLocation];

//                    if (string.IsNullOrEmpty(folderLocationFromconfig) || !Directory.Exists(folderLocationFromconfig))
//                    {
//                        if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.ExportedFilesLocation))
//                        {
//                            appSettingsValuesMap.Add(Constants.AppSettingsKeys.ExportedFilesLocation, exportedFilesLocation);
//                        }
//                        else
//                        {
//                            appSettingsValuesMap[Constants.AppSettingsKeys.ExportedFilesLocation] = exportedFilesLocation;
//                        }
//                    }
//                }

//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.MaxDateRangeInDays))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.MaxDateRangeInDays, "5");
//                }

//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.MaxRowsInAnyResultSet))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.MaxRowsInAnyResultSet, "50");
//                }

//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.DefaultExpenseBankAccount))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.DefaultExpenseBankAccount, string.Empty);
//                }

//                if (!appSettingsValuesMap.ContainsKey(Constants.AppSettingsKeys.DefaultIncomeDepositBankAccount))
//                {
//                    appSettingsValuesMap.Add(Constants.AppSettingsKeys.DefaultIncomeDepositBankAccount, string.Empty);
//                }
//            }
//            catch { }
//        }

//        public static Dictionary<string, string> AppSettingsValuesMap
//        {
//            get { return AppSettingsLoader.appSettingsValuesMap; }
            
//        }

//        private static void LoadSettings()
//        {
//            foreach (string key in ConfigurationManager.AppSettings)
//            {
//                if (!appSettingsValuesMap.ContainsKey(key))
//                {
//                    appSettingsValuesMap.Add(key, ConfigurationManager.AppSettings[key]);
//                }
//            }
//        }
//    }
//}
